package com.codeoss.framework.db.util;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.codeoss.framework.context.YunContext;
import com.codeoss.framework.data.metadata.Query;
import com.codeoss.framework.data.metadata.Table;
import com.codeoss.framework.data.metadata.TableData;
import com.codeoss.framework.util.ValueNamePair;
import com.codeoss.framework.view.datasource.IDataSource;
import com.codeoss.framework.view.datasource.store.IDataSourceStore;

@Component
public class ValueNamePairUtil {
	@Autowired
	private IDataSourceStore dataSourceStore;
	public List<ValueNamePair> getValueNamePairList(YunContext yunContext,Table table,Query query,boolean isIdColumn,boolean containCode){
		List<ValueNamePair> list=new ArrayList<ValueNamePair>();
		IDataSource dataSource=dataSourceStore.getDataSource(table.getAccessType());
		TableData tableData=dataSource.select(yunContext, table, query);
		for(int i=0;i<tableData.getData().size();i++) {
			Map<String,Object> dataMap=tableData.getData().get(i);
			ValueNamePair pair=new ValueNamePair();
			list.add(pair);
			if(isIdColumn) {
				Object value=dataMap.get(table.getPrimaryKeyColumn().getColumnName());
				pair.setValue(value);
			}else {
				Object value=dataMap.get(table.getCodeColumn().getColumnName());
				pair.setValue(value);
			}
			if(containCode) {
				pair.setName(dataMap.get(table.getNameColumn().getColumnName())+"("+dataMap.get(table.getCodeColumn().getColumnName())+")");
			}else {
				pair.setName((String)dataMap.get(table.getNameColumn().getColumnName()));
			}
		}
		return list;
	}
}
